# 1.注意：
# 元组（Tuple）也是一种sequence特性的类型，
# 它和列表非常相似，也可以存放任何类型的数据对象，
# 除了一点： 元组的内容是 不能改变 的

# 2.定义
# 定义空元组
a = ()

# 定义非空元组
a = (1, 2, 3.14, 'hello', [7, 8, 9])

# 如果元组中只有一个元素，必须要在后面加上逗号
a = (1,)

# 定义元组还可以去掉圆括号
a = 1, 2, 3.14, 'hello'

# 但是这样定义的时候，如果元组中只有一个元素，必须要在后面加上逗号
a = 1,

# 3.元组的 sequence 操作
# 3.1.元组的索引
a1 = (1, 2, 3.14, 'hello', [7, 8, 9])
a1[0]  # 就是 1
a1[1]  # 就是 2
a1[4]  # 就是 [7,8,9]
a1[-1]  # 也是 [7,8,9]
a1[-4]  # 也是 2
a1[-1][0]  # a1[-1] 是[7,8,9],  a1[-1][0] 就是 [7,8,9] 里面的第一个元素，就是 7

# 3.2.元组的切片
a2 = (1, 2, 3.14, 'hello', [7, 8, 9])
a2[0:3]  # 结果是   (1, 2, 3.14)
a2[:3]  # 结果也是 (1, 2, 3.14)
a2[3:5]  # 结果是   ('hello', [7,8,9])
a2[3:]  # 结果也是 ('hello', [7,8,9])

a2[-1][:2]  # 结果是   [7,8]

# 4.元组内容不可变
a3 = (1, 2, 3.14, 'hello', [7, 8, 9])
# a3[0] = '你好'
# print(a3)  # 报错

# 但是元组中的列表的内容却是可以改变的
a4 = (1, 2, 3.14, 'hello', [7, 8, 9])
a4[-1][0] = '你好'
print(a4)  # (1, 2, 3.14, 'hello', ['你好', 8, 9])

# 5.判断元素是否在元组中
# a in var   # 检查 a 是否在var 中存在，存在返回True，否则返回False
# a not in var   # 检查 a 是否不在var 中，存在返回 False，否则返回 True
tuple1 = (1, 2, 3, 4, 'hello')

if 'hello' in tuple1:
    print('hello 在元组中存在')

if 'boy' not in tuple1:
    print('boy 在元组中不存在')

# 6.多个变量同时赋值
x, y = (1, 2)  # x 的值为 1， y 的值为 2
print(x, y)


# 7.函数返回元组
def func1():
    age = input('请输入年龄：')
    gender = input('请输入性别：')
    return age, gender  # return (age, gender) 简写成： return age, gender


print(func1())
